1. Technical Field
The present disclosure relates to techniques for enhancing a user's perception of the three dimensional structure of a representation on a display screen, and more specifically, to techniques for enhancing a user's perception of the three dimensional structure of a point cloud displayed in a display screen.
2. Background Information
Three-dimensional (3-D) laser scanners are increasingly being used to accurately and quickly capture the shape of physical subjects, such as discrete objects, portions of structures, terrain, or other parts of the physical environment. Such scanners capture a point cloud of geometric samples on the surface of the subject. To accomplish such task, a 3-D laser scanner typically emits some form of coherent light and detects its reflection is from the surface of the physical subject. Some 3-D laser scanners rely on time-of-flight. In a time-of-flight 3-D laser scanner, a laser emits pulses of coherent light in a grid-like pattern to scan the physical subject. A laser rangefinder finds the distance to the surface of the physical subject for each pulse of coherent light by timing the round-trip-time of the pulse of light, from its emission, to its reflection back to the laser rangefinder. Other 3-D laser scanners rely on some form of triangulation Like a time-of-flight 3-D laser scanner, a triangulation 3-D laser scanner also emits coherent light in a grid-like pattern to scan the physical subject. However, rather than measure time-of flight, an offset camera is employed to look for the location where the coherent light strikes the subject (i.e. a laser dot). Depending on how far away the coherent light strikes the surface, the laser dot appears at different places in the camera's field of view, which can be used in a triangulation calculation to determine distance.
In either case, a point cloud of geometric samples is produced by repeated application of the technique, where each point of the point cloud is associated with a particular x-axis, y-axis and z-axis position on the surface of the physical subject. The points of the point cloud can be used to extrapolate the shape of the physical subject, which may be translated into a more readily used form through a reconstruction process. In reconstruction, the points of the point cloud are often used to construct a vector-based model, where the subject is represented by vector elements based on mathematical formulas, rather than on a large number of discrete points. Creating a vector-based model from a point cloud is generally a difficult process that requires at least some user-involvement in selecting which points of the point cloud should be used as the basis for vector elements. A user may be shown a rendition of the point cloud on a display (e.g., a conventional 2-D display screen) of a computer system. He or she may then be called upon to “draw” vector elements (e.g., lines, polygons, etc.) using points of the point cloud as a guide. To “draw” vector elements, a user may manipulate a cursor (e.g., using a conventional 2-D mouse) to select and “snap” to a first point of the point cloud. The user may then move the cursor (e.g., “drag” the cursor) from this first point to one or more other points that are selected and “snapped” to. Collectively, the “snapped” to points may define the bounds of the vector element, with the x-axis, y-axis and z-axis position in 3-D space of the “snapped” to points assigned to the relevant portions of the vector element.
Unfortunately, there are a number of issues which complicate reconstruction. When displayed on a conventional 2-D display screen, a point cloud typically appears completely flat. While each point in the point cloud may represent data at a different distance in 3-D space from a viewing position in the 3-D space, when displayed on a conventional 2-D display screen, most systems show the points without perspective effects, and therefore they are all represented by dots of the same size. Absent visual depth information, a user is generally unable to discern how far away from the viewing position a point is in 3-D space, without time-consuming additional operations.
This issue is compounded by the fact that point clouds are often discontinuous. Points that visually appear proximate to each other on a 2-D display screen may not be part of the same surface in 3-D space, but may instead be derived from surfaces in that simply happen to be aligned with respect to the viewing position in 3-D space. A point from a deeper surface may be shown next to a point from a closer surface, simply because those surfaces “overlap” when viewed from a certain perspective. Accordingly, a user generally is unable to definitively determine whether two points are part of the same surface or are parts of different surfaces, without time-consuming additional operations.
The above discussed lack of depth information and discontinuities of point clouds may cause “snapping” to points to be a frustrating process for a user. For example, a user may select a first point to begin a vector element that the user guesses is at a desired depth. However, without time-consuming additional operations, the user cannot be cerin tain their selection is actually at the depth intended. The user may then select a second point to terminate the vector element that the user guesses is also at the desired depth. As with the first point, the user cannot be certain their selection is actually at the depth intended. Further, due to the discontinuous nature of point clouds, the user cannot be certain that the second point is even part of the same surface as the first point. Even worse, if the user happens to move the cursor to an ambiguous location that is between two different points, that are part of surfaces at different depths, the user's selection may jitter (for example, due to tiny inadvertent mouse movements) between points of different surfaces. The user may be unaware this is even occurring.
To have some assurance that a vector element begins and ends at points of an intended depth that are part of the same surface, a user may have to first “draw” the vector element, and then rotate the point cloud, to see the point cloud and the vector element from a different viewing position in 3-D space. If it appears the vector element was “drawn” from some point too near or too far, the user may have to repeat the process, selecting different points, and then rotating the point cloud to see if these new selections produce better results. Such repetitive time-consuming operations may prove frustrating to the user, who may be forced to spend an inordinate amount of time in reconstructing a vector-based model from a point cloud.
Various techniques have been proposed in attempts to address these issues, but have meet with limited success. Some techniques have sought to “clip” point clouds to limit the possible points a user can “snap” to. However, “clipping” a point cloud is a processing intensive operation. Further, “clipping” a point cloud does not change the fundamental issue of a lack of depth information being conveyed to the user. It merely masks some of the adverse effects of the lack of depth information. Other techniques have sought to render points of point clouds in different colors depending on their height above some plane in 3-D space, such as the ground. However, while this may be helpful in some situations, it provides little help in others. For example, points that are located on different surfaces that happened to be located about the same height off the plane (e.g., the ground) will be rendered in the same color. A user attempting to distinguish between the points on each surface would receive little help from the color indications. Still other techniques have sought to display point clouds in three dimensions, using three-dimensional stereo visualization equipment. However, three-dimensional stereo visualization equipment is expensive and not widely deployed. Accordingly, such an approach may be impracticable with the present state of technology.
What is needed is a technique that enhances a user's perception of the three dimensional structure of a representation (e.g., a point cloud) such that a user may quickly and accurately select portions of the representation (e.g., points), for example to be “snapped” to.